package com.sky.module.system.role.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sky.module.system.role.domain.entity.Role;
import com.sky.module.system.role.domain.vo.RoleQueryVo;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author zsg
 * @since 2023-02-20
 */
public interface RoleService extends IService<Role> {
    /***
     * @description 根据用户查询角色列表
     *
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zsg.entity.Role>
     * @date 2023/2/23 0:19
     *
     */
    IPage<Role> findRoleListByPage(IPage<Role> page, RoleQueryVo roleQueryVo);

    /***
     * @description 判断角色是否被分配
     *
     * @param id
     * @return boolean
     * @date 2023/2/23 1:07
     *
     */
    boolean hasRoleCount(Long id);

    /***
     * @description 删除
     * @param id
     * @return boolean
     * @date 2023/2/23 1:19
     *
     */
    boolean removeByRoleId(Long id);

    /***
     * @description 保存角色权限信息
     * @param roleId
     * @param permissionIds
     * @return boolean
     * @date 2023/2/23 19:09
     *
     */
    boolean saveRolePermission(Long roleId, List<Long> permissionIds);

    /***
     * @description TODO
     * @param userId
     * @return java.util.List<java.lang.Long>
     * @date 2023/2/24 2:18
     *
     */
    List<Long> findRoleIdByUserId(Long userId);


    /***
     * @description 保存角色信息，做数据变更的记录
     * @param role
     * @return boolean
     * @date 2023/3/9 0:49
     *
     */
    boolean saveRole(Role role);

    /***
     * @description 同时保存数据变更记录
     * @param role
     * @return boolean
     * @date 2023/3/9 1:11
     *
     */
    boolean updateRoleById(Role role);
}
